package cn.kgc.springmvc01.controller;

import cn.kgc.springmvc01.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * @author: mosin
 * @version: v1.0  2022/12/9
 *  请求参数的设置
 *  1.基本类型  int  float
 *  2.类类型  User
 *  3.数组
 *  4.json  user
 */
@Controller
@RequestMapping("param")
public class ParamController {

    /*
    * 使用基本类型接收参数时   形参必须要赋值 否则报错   null  ->  int
    *
    * 解决方案：
    * 1.设置形式参数的别名 @RequestParam("uid") 解决路径中的key和形参名字不一致
    * 2.设置默认值  @RequestParam(defaultValue = "20")
    * 3.接收参数可以使用基本类型的包装类型接收参数
    *
    * */
    @RequestMapping("p1")  //  key   ->  形式参数名字   /param/p1?id=10&name=tom
    public String param1(Integer id, String name){
        System.out.println("id = " + id);
        System.out.println("name = " + name);
        return "index";
    }


    @RequestMapping("p2")  //  key   ->  对象中的属性名 保持一致   /param/p2?age=10&username=tom&password=12345
    public String param2(User user){
        System.out.println("user = " + user);
        return "index";
    }

    @RequestMapping("p3")  // 接收数组类型的参数   /param/p3?ids=1&ids=2&ids=3
    public String param3(Integer[] ids){
        for (Integer id : ids) {
            System.out.println("id = " + id);
        }
        return "index";
    }

    //json  '{username:tom,age:20,password:12345}' @RequestBody 注解 标识参数时json格式的数据   jackson
    @RequestMapping("p4")  // 接收数组类型的参数   /param/p4
    public String param4(@RequestBody User user){
        System.out.println("user = " + user);
        return "index";
    }

}
